package com.tean.book

import android.app.Activity
import android.app.Application
import android.content.Context
import android.content.res.Configuration
import android.os.Process
import android.util.Log
import androidx.multidex.MultiDex
import me.jessyan.autosize.AutoSize
import me.jessyan.autosize.AutoSizeConfig
import me.jessyan.autosize.onAdaptListener

class BookApp : Application() {
    private val list: MutableList<Activity> = ArrayList() //管理activity
    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        //通过全局的上下文参数更改相关资源配置
//		LocalManageUtils.onConfigurationChanged(getApplicationContext());
    }


    override fun onCreate() {
        super.onCreate()
        MultiDex.install(this)
        AutoSize.initCompatMultiProcess(this)
        AutoSizeConfig.getInstance() //是否让框架支持自定义 Fragment 的适配参数, 由于这个需求是比较少见的, 所以须要使用者手动开启
            //如果没有这个需求建议不开启
            .setCustomFragment(false) //是否屏蔽系统字体大小对 AndroidAutoSize 的影响, 如果为 true, App 内的字体的大小将不会跟随系统设置中字体大小的改变
            //如果为 false, 则会跟随系统设置中字体大小的改变, 默认为 false
            .setExcludeFontScale(true).onAdaptListener = object : onAdaptListener {
            override fun onAdaptBefore(target: Any, activity: Activity) {
                //使用以下代码, 可支持 Android 的分屏或缩放模式, 但前提是在分屏或缩放模式下当用户改变您 App 的窗口大小时
                //系统会重绘当前的页面, 经测试在某些机型, 某些情况下系统不会重绘当前页面, ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application
//                        AutoSizeConfig.getInstance().setScreenWidth(ScreenUtils.getScreenSize(activity)[0]);
//                        AutoSizeConfig.getInstance().setScreenHeight(ScreenUtils.getScreenSize(activity)[1]);
//						LogUtils.d(String.format(Locale.ENGLISH, "%s onAdaptBefore!", target.getClass().getName()));
            }

            override fun onAdaptAfter(target: Any, activity: Activity) {
//						LogUtils.d(String.format(Locale.ENGLISH, "%s onAdaptAfter!", target.getClass().getName()));
            }
        }
    }

    fun removeActivity(a: Activity) {
        list.remove(a)
    }

    //添加Activity对象
    fun addActivity(a: Activity) {
        list.add(a)
    }

    //移除所有activity,结束进程
    fun exit() {
        for (activity in list) {
            activity?.finish()
        }
        //        System.exit(0);
        Process.killProcess(Process.myPid())
    }
}